with

Доступность

Flash Player 5.

Синтаксис

with (object:Object) {
  оператор(ы);
}

Параметры

object Объект ActionScript или мувиклип.

оператор(ы) Действие или группа действий, заключенных в фигурные скобки ({}).

Возвращает

Ничего.

Описание

Оператор; позволяет определить объект (такой как, допустим, мувиклип) в качестве параметра object и проводить с ним операции, указанные в параметре оператор(ы). Это избавит вас от постоянного написания имени объекта или пути к нему.

Параметр object является контекстом для операторов в теле параметра оператор(ы). Например, если как параметр object передан массив my_array, а в теле оператора указаны свойство и метод length и concat, эти свойство и метод автоматически интерпретируются как my_array.length и my_array.concat. Или же, если object есть state.california, любые операторы внутри тела оператора with вызываются из экземпляра california.

Для определения значения в параметре оператор(ы), компилятор ActionScript начинает поиск с области видимости объекта object и продолжает его по цепочке областей видимости.

Цепочка областей видимости, используемая оператором with для нахождения значения идентификаторов, включает в себя:

Для присвоения значения переменной внутри оператора with, Вы либо должны объявить переменную вне оператора with, либо указать полный путь к Таймлайну, содержащему нужную переменную. Если присвоить значение переменной внутри оператора with без объявления ее вне этого оператора, оператор with будет искать значение в соответствии с цепочкой областей видимости, указанной выше. И, если переменная не существует, значение будет присвоено новой переменной на Таймлайне, откуда был вызван оператор with.

Вместо использования with() вы можете использовать прямую адресацию (абсолютное указание путей). Если вам покажется, что это слишком неудобно, можете создать локальную переменную и хранить в ней путь к нужному Таймлайну, а затем многократно использовать ее в коде, как показано ниже:

var shortcut = this._parent._parent.name_txt;
shortcut.text = "Hank";
shortcut.autoSize = true;

Для более подробной информации и советам по написанию читабельного кода, смотри Как избежать использования оператора with в Использовании ActionScript во Flash.

Пример

В примере ниже устанавливаются свойства _x и _y мувиклипа someOther_mc, а затем мувиклипу someOther_mc дается инструкция перейти в 3 кадр и остановить проигрывание.

with (someOther_mc) {
  _x = 50;
  _y = 100;
  gotoAndStop(3);
}

Следующий пример показывает, как будет выглядеть тот же самый код без использования оператора with.

someOther_mc._x = 50;
someOther_mc._y = 100;
someOther_mc.gotoAndStop(3);

Оператор with удобен, если необходимо иметь доступ к нескольким . В примере ниже, встроенный объект Math является первым объектом в цепочке областей видимости. Определение Math как объекта по умолчанию автоматически разрешает адресацию cos, sin и PI как, соответственно, Math.cos, Math.sin и Math.PI. Идентификаторы a, x, y иr не являются членами объекта Math, но так как они существуют в объекте активации функции polar(), они связаны с соответсвующими локальными переменными.

function polar(r:Number):Void {
  var a:Number, x:Number, y:Number;
  with (Math) {
    a = PI*pow(r, 2);
    x = r*cos(PI);
    y = r*sin(PI/2);
  }
  trace("Площадь = "+a);
  trace("x = "+x);
  trace("y = "+y);
}
polar(3);

На панели Output отобразится следующее

area = 28.2743338823081
x = -3
y = 3

См. также

tellTarget